#!/bin/bash

# ServBay MySQL 快速修复脚本

set -e

# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m'

print_info() {
    echo -e "${BLUE}ℹ️  $1${NC}"
}

print_success() {
    echo -e "${GREEN}✅ $1${NC}"
}

print_warning() {
    echo -e "${YELLOW}⚠️  $1${NC}"
}

print_error() {
    echo -e "${RED}❌ $1${NC}"
}

print_header() {
    echo ""
    echo -e "${BLUE}========================================${NC}"
    echo -e "${BLUE}$1${NC}"
    echo -e "${BLUE}========================================${NC}"
    echo ""
}

# 主函数
main() {
    print_header "🔧 ServBay MySQL 快速修复"
    
    # 1. 检查 ServBay MySQL 是否运行
    print_info "检查 MySQL 服务状态..."
    if ps aux | grep -v grep | grep "ServBay.*mysql" > /dev/null; then
        print_success "MySQL 服务正在运行"
        
        # 显示 MySQL 信息
        SOCKET_PATH="/Applications/ServBay/tmp/mysql-8.1.sock"
        print_info "Socket 路径: $SOCKET_PATH"
        print_info "端口: 3306"
    else
        print_error "MySQL 服务未运行"
        print_warning "请打开 ServBay 应用并启动 MySQL 8.1"
        exit 1
    fi
    
    echo ""
    
    # 2. 检查 .env 文件
    print_info "检查配置文件..."
    if [ -f ".env" ]; then
        print_warning ".env 文件已存在"
        
        # 检查是否使用了 localhost
        if grep -q "localhost:3306" .env; then
            print_warning "检测到使用 'localhost'，这可能导致 socket 错误"
            print_info "建议修改为 '127.0.0.1'"
            echo ""
            read -p "是否自动修复？(y/n) " -n 1 -r
            echo ""
            if [[ $REPLY =~ ^[Yy]$ ]]; then
                # 备份原文件
                cp .env .env.backup
                print_success "已备份 .env 到 .env.backup"
                
                # 替换 localhost 为 127.0.0.1
                sed -i '' 's/localhost:3306/127.0.0.1:3306/g' .env
                print_success "已将 localhost 替换为 127.0.0.1"
            fi
        else
            print_success ".env 配置看起来正确"
        fi
    else
        print_warning ".env 文件不存在，创建中..."
        cp env.example .env
        
        # 自动替换为 127.0.0.1
        sed -i '' 's/localhost:3306/127.0.0.1:3306/g' .env
        
        print_success ".env 文件已创建"
        print_warning "请编辑 .env 文件，配置数据库密码和其他参数"
        print_info "nano .env"
    fi
    
    echo ""
    
    # 3. 显示当前配置
    print_info "当前数据库配置："
    if [ -f ".env" ]; then
        grep "DATABASE_URL" .env | head -1
    fi
    
    echo ""
    
    # 4. 提供连接命令
    print_header "📝 下一步操作"
    
    echo "1️⃣  连接到 MySQL 配置数据库："
    echo "   ./mysql_connect.sh"
    echo ""
    echo "2️⃣  或手动连接："
    echo "   mysql -h 127.0.0.1 -P 3306 -u root -p"
    echo ""
    echo "3️⃣  执行以下 SQL 创建用户和数据库："
    echo ""
    cat << 'SQL'
   CREATE DATABASE IF NOT EXISTS ai_agent 
   CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
   
   CREATE USER IF NOT EXISTS 'aitools'@'%' 
   IDENTIFIED WITH mysql_native_password BY '你的密码';
   
   GRANT ALL PRIVILEGES ON ai_agent.* TO 'aitools'@'%';
   FLUSH PRIVILEGES;
SQL
    echo ""
    echo "4️⃣  更新 .env 文件中的密码"
    echo ""
    echo "5️⃣  测试连接："
    echo "   python test_mysql_connection.py"
    echo ""
    echo "6️⃣  初始化数据库表："
    echo "   mysql -h 127.0.0.1 -P 3306 -u aitools -p ai_agent < init.sql"
    echo ""
    echo "7️⃣  启动服务："
    echo "   uvicorn app.main:app --reload"
    echo ""
    
    print_header "✅ 修复完成"
    print_info "详细文档请查看: SERVBAY_MYSQL_SETUP.md"
}

# 执行主函数
main

